using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Diagnostics;
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.StorageClient;
using Microsoft.WindowsAzure.Search;
using System.Diagnostics;

namespace WebRole1
{
    public class WebRole : RoleEntryPoint
    {
        public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            #region Setup CloudStorageAccount Configuration Setting Publisher
            // This code sets up a handler to update CloudStorageAccount instances when their
            // corresponding configuration settings change in the service configuration file.
            CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
            {
                // Provide the configSetter with the initial value
                configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
                RoleEnvironment.Changed += (s, arg) =>
                {
                    if (arg.Changes.OfType<RoleEnvironmentConfigurationSettingChange>()
                    .Any((change) => (change.ConfigurationSettingName == configName)))
                    {
                        // The corresponding configuration setting has changed,
                        // propagate the value
                        if (!configSetter(RoleEnvironment.
                        GetConfigurationSettingValue(configName)))
                        {
                            // In this case, the change to the storage account credentials in the
                            // service configuration is significant enough that the role needs
                            // to be recycled in order to use the latest settings. (for example,
                            // the endpoint has changed)
                            RoleEnvironment.RequestRecycle();
                        }
                    }
                };
            });
            #endregion

            CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("IndexConnectionString");
            CloudQueueClient queueClient = account.CreateCloudQueueClient();
            CloudBlobClient blobClient = account.CreateCloudBlobClient();

            CloudQueue queryQueue = queueClient.GetQueueReference("query");
            queryQueue.CreateIfNotExist();

            return base.OnStart();
        }
    }
}
